﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WinForm
{
    public partial class SanPhamForm : Form
    {
        private List<Library.BIZ.SanPhamBIZ> listsp;
        private bool isUpdate;
        private Library.BIZ.SanPhamBIZ sp_temp;
        public SanPhamForm()
        {
            InitializeComponent();
        }

        private void SanPhamForm_Load(object sender, EventArgs e)
        {
            richTextBox1.ReadOnly = textBox1.ReadOnly = textBox2.ReadOnly = textBox3.ReadOnly = textBox4.ReadOnly = true;
            dataGridView1.AutoGenerateColumns = false;
            listsp = Library.DAL.SanPhamDAL.FindAll(null, null);
            dataGridView1.DataSource = listsp;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (!isUpdate)
            {
                Them();
            }
            else
            {
                Sua(sp_temp);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.ShowDialog();
            label5.Text = op.FileName;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có muốn xóa", "Thông báo", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
            {
                try
                {
                    Library.BIZ.SanPhamBIZ sp = (Library.BIZ.SanPhamBIZ)dataGridView1.SelectedRows[0].DataBoundItem;
                    if (!sp.Delete())
                    {
                        MessageBox.Show("Không thể xóa, do ràng buộc dữ liệu");
                        return;
                    }
                    listsp.Remove(sp);
                    dataGridView1.DataSource = null;
                    dataGridView1.DataSource = listsp;
                }
                catch
                {
                }

            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            label5.Text = "...";
            isUpdate = false;
            richTextBox1.Clear();
            textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
            richTextBox1.ReadOnly = textBox1.ReadOnly = textBox2.ReadOnly = textBox3.ReadOnly = textBox4.ReadOnly = false;
            textBox1.Focus();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            label5.Text = "...";
            sp_temp = new Library.BIZ.SanPhamBIZ();
            try
            {
                sp_temp = (Library.BIZ.SanPhamBIZ)dataGridView1.SelectedRows[0].DataBoundItem;
            }
            catch
            {
                return;
            }

            isUpdate = true;
            richTextBox1.Clear();
            textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
            richTextBox1.ReadOnly = textBox1.ReadOnly = textBox2.ReadOnly = textBox3.ReadOnly = textBox4.ReadOnly = false;
            textBox1.Text = sp_temp.MaSP;
            textBox2.Text = sp_temp.TenSP;
            textBox3.Text = sp_temp.HangSanXuat;
            richTextBox1.Text = sp_temp.MoTa;
            textBox4.Text = sp_temp.Gia.ToString();
            
            textBox1.Focus();
            
        }

        private void Sua(Library.BIZ.SanPhamBIZ s)
        {
            Library.BIZ.SanPhamBIZ old = s;
            if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "")
            {
                MessageBox.Show("Phải nhập đầy đủ thông tin");
                return;
            }

            s.MaSP = textBox1.Text;
            s.TenSP = textBox2.Text;
            s.HangSanXuat = textBox3.Text;
            s.MoTa = richTextBox1.Text;
            long temp = 0;
            if (!long.TryParse(textBox4.Text, out temp))
            {
                MessageBox.Show("Giá sản phẩm phải là số");
                return;
            }
            s.Gia = temp;
            int vt = label5.Text.LastIndexOf('\\');
            if (vt != -1) s.HinhAnh = label5.Text.Substring(vt + 1);

            if (s.Update())
            {
                if (!String.IsNullOrEmpty(s.HinhAnh))
                {
                    try
                    {
                        // copy hình ảnh vào thư mục chứa hình
                        File.Copy(label5.Text, System.Configuration.ConfigurationManager.AppSettings["dirIMG"].ToString() + "//" + s.HinhAnh);
                    }
                    catch
                    {
                    }

                }
                int n = listsp.FindIndex(x =>  x.ID == s.ID);
                listsp[n] = s;
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = listsp;
                textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
                richTextBox1.Clear();
                label5.Text = "...";
                richTextBox1.ReadOnly = textBox1.ReadOnly = textBox2.ReadOnly = textBox3.ReadOnly = textBox4.ReadOnly = true;
                MessageBox.Show("Lưu thành công");
            }
            else
            {
                MessageBox.Show("Không thể thêm, dữ liệu không hợp lệ, có thể mã sản phẩm đã tồn tại");
            }

        }
        private void Them()
        {
            if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "")
            {
                MessageBox.Show("Phải nhập đầy đủ thông tin");
                return;
            }
            Library.BIZ.SanPhamBIZ s = new Library.BIZ.SanPhamBIZ();
            s.MaSP = textBox1.Text;
            s.TenSP = textBox2.Text;
            s.HangSanXuat = textBox3.Text;
            s.MoTa = richTextBox1.Text;
            long temp = 0;
            if (!long.TryParse(textBox4.Text, out temp))
            {
                MessageBox.Show("Giá sản phẩm phải là số");
                return;
            }
            s.Gia = temp;
            int vt = label5.Text.LastIndexOf('\\');
            if (vt != -1) s.HinhAnh = label5.Text.Substring(vt + 1);
            s.ID = s.Add();
            if (s.ID != -1)
            {
                // thêm thành công
                listsp.Add(s);
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = listsp;
                if (!String.IsNullOrEmpty(s.HinhAnh))
                {
                    try
                    {
                        // copy hình ảnh vào thư mục chứa hình
                        File.Copy(label5.Text, System.Configuration.ConfigurationManager.AppSettings["dirIMG"].ToString() + "//" + s.HinhAnh);
                    }
                    catch
                    {
                    }
                  
                }
                textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear();
                richTextBox1.Clear();
                label5.Text = "...";
                richTextBox1.ReadOnly = textBox1.ReadOnly = textBox2.ReadOnly = textBox3.ReadOnly = textBox4.ReadOnly = true;
            }
            else
            {
                MessageBox.Show("Không thể thêm, mã sản phẩm không được trùng, hoặc giá sản phẩm phải là số");
            }
        }

        private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
        {
            try
            {
                Library.BIZ.SanPhamBIZ s = (Library.BIZ.SanPhamBIZ)dataGridView1.SelectedRows[0].DataBoundItem;
                if (!String.IsNullOrEmpty(s.HinhAnh))
                {
                    Image image = Image.FromFile(System.Configuration.ConfigurationManager.AppSettings["dirIMG"].ToString() + "//" + s.HinhAnh);
                    pictureBox1.Image = image;
                    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                }
                else
                {
                    pictureBox1.Image = null;
                }
            }
            catch
            {
                return;
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            listsp = Library.DAL.SanPhamDAL.FindAll(textBox5.Text.Trim(), textBox6.Text.Trim());
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = listsp;
        }



        
    }
}